package lormi.meipin.controller.api;

import lormi.meipin.annotation.NotValidUser;
import lormi.meipin.common.Result;
import lormi.meipin.controller.BaseController;
import lormi.meipin.dto.CurrencyDto;
import lormi.meipin.dto.TalentEditDto;
import lormi.meipin.dto.TalentNearByDto;
import lormi.meipin.dto.TalentSearchDto;
import lormi.meipin.exception.LMException;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import javax.validation.Valid;
import javax.validation.constraints.NotNull;

/**
 * 个人相关控制器
 * */
@RestController
@RequestMapping(value="v2/talent",method=RequestMethod.POST,produces = "application/json; charset=utf-8")
public class TalentController extends BaseController{
	
	/**
	 * 修改人才信息
	 * @Param userid 用户id
	 * @Param usertype
	 * @Param imgurl 头像地址
	 * @Param username 姓名
	 * @Param sex 性别
	 * @Param age 年龄
	 * @Param workingage 工作年龄
	 * @Param currtitle 当前职位名称
	 * @Param workingstate 工作状态
	 * @Param label 个人亮点
	 * 
	 * */
	@RequestMapping("edit")
	public String editTalent(@Valid TalentEditDto talentEditDto,BindingResult result) throws LMException{
		checkResult(result);
		
		talentService.editTalent(talentEditDto);
		return Result.success();
	}
	
	/**
	 * 获取人才信息
	 * @param userid 用户id
	 * */
	@RequestMapping("get")
	public String get(Integer userid) throws LMException{
		return Result.success(talentService.getTalent(userid));
	}
	
	/**
	 * 人才中心数据
	 * @param userid 用户id
	 * */
	@RequestMapping("center")
	public String getTalent(Integer userid) throws LMException{
		return Result.success(talentService.getTalentCenter(userid));
	}
	
	/**
	 * 获取人才列表
	 * @Param userid 用户ID
	 * @Param usertype 用户类型
	 * @Param cityid 城市ID
	 * @Param positionclass 职位类型ID
	 * @Param salary 工资区间
	 * @Param experience 工作经验区间
	 * @Param pagesize 每页的条数
	 * @Param pagenow 当前页数
	 * */
	@RequestMapping("search")
	public String getTalentExpectWork(@Valid TalentSearchDto talentSearchDto,BindingResult result) throws LMException{
		checkResult(result);
		
		return Result.success(talentService.searchTalent(talentSearchDto));
	}
	
	/**
	 * 获取附近的人才
	 * @Param userid 用户ID
	 * @Param usertype 用户类型
	 * @Param longitude 精度
	 * @Param latitude 维度
	 * @Param pagesize 每页的条数
	 * @Param pagenow 当前页数
	 * */
	@RequestMapping("nearby")
	public String getTalentNearBy(@Valid TalentNearByDto talentNearByDto,BindingResult result) throws LMException{
		checkResult(result);
		
		return Result.success(talentService.nearByTalent(talentNearByDto));
	}
	
	/**
	 * 商家=》查看个人信息
	 * @throws Exception 
	 * @Param userid 用户ID
	 * @Param usertype 用户类型
	 * @Param talentid 人才ID
	 * @Param sharecode:SHLF8DF8ASD8 用于邀请查看
	 * */
	@RequestMapping("see")
	@NotValidUser
	public String see(@NotNull(message="100033") @RequestParam(value="userid",required=false) Integer userid,
			@NotNull(message="100033") @RequestParam(value="talentid",required=false) Integer talentid,
			@RequestParam(value="sharecode",required=false) String sharecode) throws Exception{
		return Result.success(talentService.seeTalent(userid, talentid, sharecode));
	}
	
	/**
	 * 人才=》通知中获取信息(在聊天通知)
	 * @Param userid 
	 * @Param usertype 
	 * @Param pagesize 每页的条数
	 * @Param pagenow 当前页数
	 * */
	@RequestMapping("notice")
	public String nearByPositionList(@Valid CurrencyDto currencyDto,BindingResult result) throws LMException{
		checkResult(result);
		
		return Result.success(talentService.noticeTalent(currencyDto));
	}
	
	
}
